The majority of electronic systems include some type of processor. Processors can be made with different architectures, and the architecture can affect how efficient the processor is at performing certain processing tasks. For example, general purpose processors tend to have one or a small number of processing cores, and are most efficient for serial processing tasks. Other types of processors can have many processing units and be more efficient at processing many smaller tasks in parallel.
Array of structures (AOS) is a convenient data format for use by software, which can be conveniently stored in memory for serial execution. However, structure of arrays (SOA) is a data format more convenient for efficient parallel execution. Thus, the two different formats are each better suited to different processor architectures. In many computing systems there are reasons to convert from AOS to SOA and/or from SOA to AOS. Traditionally, the conversion between AOS and SOA is based on the size of the underlying data structures. Thus, bus utilization or transfer bandwidth utilization in the conversion is dependent on the underlying structure size, which leads to performance degradation and power losses on a system resource (bus bandwidth) that tends to be constrained even without introducing inefficiencies in AOS to SOA conversion.
Descriptions of certain details and implementations follow, including a description of the figures, which may depict some or all of the embodiments described below, as well as discussing other potential embodiments or implementations of the inventive concepts presented herein.